package com.module.imageloader.loaders

import android.content.Context
import android.graphics.drawable.Drawable
import android.view.View
import com.bumptech.glide.RequestBuilder
import com.bumptech.glide.request.target.CustomViewTarget
import com.module.imageloader.option.ImageOptions

/**
 * date        ：2020/7/14
 * author      ：蒙景博
 * description ：
 */
interface ImageDelegate {

    /**
     * 加载Image
     */
    fun loadImage(option: ImageOptions): RequestBuilder<Drawable>?

    /**
     * 暂停请求
     */
    fun pauseRequests(context: Context)

    /**
     * 暂停所有请求
     */
    fun pauseAllRequests(context: Context)

    /**
     * 恢复请求
     */
    fun resumeRequests(context: Context)

    /**
     * 清除磁盘缓存
     */
    fun clearDiskCache(context: Context)

    /**
     * 清除View
     */
    fun clear(view: View)

    /**
     * 清除内存缓存
     */
    fun clearMemory(context: Context)

    /**
     * 根据设定的级别，将内存缓存自动调节到合适的大小。
     */
    fun trimMemory(context: Context, level: Int)

    /**
     * 带有回调的请求
     */
    fun <V: View> request(option: ImageOptions, callback: CustomViewTarget<V, Drawable>)
}